package com.wyix.controller;

import com.wyix.domain.User;
import jakarta.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wangdx
 * @since 2025/8/19
 */
@Controller
@RequestMapping("/users")
public class UserController {
    // 模拟用户数据存储
    private final List<User> userList = new ArrayList<>();

    public UserController() {
        // 初始化测试数据
        userList.add(new User(1L, "张三", "zhangsan@example.com", 25));
        userList.add(new User(2L, "李四", "lisi@example.com", 30));
    }

    // 显示用户列表页面
    @GetMapping
    public String listUsers(Model model) {
        // 向视图传递数据
        model.addAttribute("users", userList);
        // 返回视图名称（对应templates/user/list.html）
        return "user/list";
    }

    // 显示新增用户表单
    @GetMapping("/new")
    public String showAddForm(Model model) {
        model.addAttribute("user", new User());
        return "user/add-form";
    }

    // 处理新增用户表单提交
    @PostMapping
    public String addUser(@Valid @ModelAttribute User user, BindingResult result) {
        // 数据验证（如存在错误返回表单页面）
        if (result.hasErrors()) {
            return "user/add-form";
        }
        // 保存用户（实际项目应存入数据库）
        user.setId(System.currentTimeMillis());
        userList.add(user);
        // 重定向到列表页（避免表单重复提交）
        return "redirect:/users";
    }

}
